Stereo auto-calibration from structure-from-motion

ABSTRACT

Auto-calibration of stereo cameras installable behind the windshield of a host vehicle and oriented to view the environment through the windshield. Multiple first image points are located of one of the first images captured from the first camera at a first time and matched with first image points of at least one other of the first images captured from the first camera at a second time to produce pairs of corresponding first image points respectively in the first images captured at the different times. World coordinates are computed from the corresponding first image points. Second image points in the second images captured from the second camera are matched to at least a portion of the first image points. The world coordinates as determined from the first camera are used, to solve for camera parameters of the second camera from the matching second image points of the second camera.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims the benefit of priority of U.S. patent application Ser. No. 15/280,117, filed Sep. 29, 2016 (now allowed), which is a continuation of U.S. patent application Ser. No. 14/554,544, filed Nov. 26, 2014, now U.S. Pat. No. 9,509,979, issued on Nov. 29, 2016, which claims the benefit of priority of U.S. Provisional Patent Application No. 61/908,831, filed on Nov. 26, 2013 by the same inventors, the disclosure of each of which is included herein by reference in its entirety.

BACKGROUND

1. Technical Field

The present disclosure relates to a method for calibration stereo cameras and in particular for use inside a vehicle as part of a driver assistance system.

2. Description of Related Art

Stereo vision is the process of recovering depth from camera images by comparing two or more views of the same scene. Binocular stereo uses two images, taken with cameras that are separated by a horizontal distance known as the “baseline”. Calibrating the stereo camera system allows computation of three-dimensional world points in actual units, e.g. millimeters, relative to the cameras based on the image coordinates.

Calibration of a stereo camera system involves the estimation of extrinsic parameters which describe translation and rotation of the second camera relative to the first camera and intrinsic parameters of each camera. Intrinsic parameters include focal lengths, principal points and other parameters which describe camera image distortion. Image distortion means that image points are displaced from the position predicted by an ideal pinhole projection model. The most common form of distortion is radial distortion, which is inherent in all single-element lenses. Under radial distortion, e.g. pincushion distortion and/or barrel distortion, image points are displaced in a radial direction from the image center.

Different sources of information can be used to obtain camera calibration. One approach (sometimes called “off-line” calibration) is to use a known target where the three-dimensional world coordinates (or locations in three-dimensional space) of respective multiple points are known. One such option may use a checkerboard with known square size at a known location in world coordinates. Such calibration techniques require special equipment anchor a special procedure that is time consuming and costly.

Cameras for use in driver assistance and/or driving control may be mounted viewing in the forward direction inside a vehicle behind the windshield. Stereo calibration for stereo cameras mounted behind the windshield is thus further complicated; since the windshield distorts the perspective or camera projection, the calibration may be performed only after installing the cameras in the host vehicle. Cameras are generally modelled using the pinhole camera model using perspective projection. This model is a good approximation to the behavior of most real cameras, although in some cases it can be improved by taking non-linear effects (such as radial distortion) into account.

Auto-calibration or self-calibration refers to a technique in which the camera parameters are updated “on-line” by processing images being captured during motion of the vehicle. In automotive applications, auto-calibration may insure maintenance-free long-term operation, since camera parameters may be subject to drift due mechanical vibrations or large temperature variations that are commonly encountered in automotive applications. Additionally, reliable auto-calibration techniques may render obsolete initial off-line calibration, thus reducing time and cost in the production line.

Thus there is a need for and it would be advantageous to have a method for auto-calibration stereo cameras suitable for driver assistance and or driving control applications in automobiles.

Structure-from-Motion (SfM) refers to methods for recovering three-dimensional information of a scene that has been projected onto the back focal plane of a camera. The structural information derived from a SfM algorithm may take the form of a set of projection matrices, one projection matrix per image frame, representing the relationship between a specific two-dimensional point in the image plane of the camera and its corresponding three-dimensional point in world space. Alternatively, the structure information is the depth or distance to the three-dimensional (3D) point P=(X,Y,Z) which projects onto the image plane at the two-dimensional (2D) point p=(x,y). SfM algorithms rely on tracking specific image features from image frame to image frame to determine structural information concerning the scene. Structure-from-Motion (SIM) techniques useful in driver assistance applications have been previously disclosed by the present Applicant in US patent application publication 2014/0160244 entitled: Monocular Cued Detection of three-dimensional Structures from Depth Images, which is included herein by reference. US patent application publication 2014/0160244 discloses a system mountable in a host vehicle including a camera connectible to a processor. Multiple image frames are captured in the field of view of the camera. In the image frames, an imaged feature is detected of an object in the environment of the vehicle. The image frames are portioned locally around the imaged feature to produce imaged portions of the image frames including the imaged feature. The image frames are processed to compute a depth map locally around the detected imaged feature in the image portions. The depth map may be represented by an image of the feature with a color or grayscale coordinate related to a function of distance from the camera to the object. Using the camera projection and known camera intrinsic and extrinsic parameters relative to a world coordinate system, the depth map is sufficient to provide the three-dimensional world coordinates of the imaged feature.

The computation of depth maps from multiple images, either from a motion time sequence and/or from multiple cameras is the subject of extensive research and numerous systems have been demonstrated.

BRIEF SUMMARY

Various systems and methods are disclosed herein for auto-calibration of stereo cameras including a first camera and second camera installable behind the windshield of a host vehicle and oriented to view the environment through the windshield, and a processor connectible to the stereo cameras. The processor during motion of the host vehicle captures multiple series of images respectively from the stereo cameras including a first time series of first images from the first camera and a second time series of second images from the second camera. The processor locates multiple first image points of at least one of the first images captured from the first camera at a first time and matches at least a portion of the first image points with first image points of at least one other of the first images captured from the first camera at a second time to produce pairs of corresponding first image points respectively in the first images captured at the different times. Responsive to the motion of the host vehicle, the processor computes world coordinates from the pairs of corresponding first image points of at least two of the first images captured at the different times from the first camera. The processor matches multiple second image points from the second camera to corresponding first image points from the first camera. Matching may be constrained to epipolar lines. The world coordinates of at least a portion of the first image points are then used to solve for multiple camera parameters of the second camera. The solution of the camera parameters of the second camera will then predict a depth map based on stereo disparity consistent with the world coordinates computed from the first images responsive to the motion of the host vehicle. The processor may re-compute the camera parameters of the second camera with an initial estimate of the center of distortion of the second camera to compute further camera parameters including radial distortion parameters of the second camera. Alternatively, the radial distortion parameters may be computed together with the camera matrix of the second camera. The processor may perform the auto-calibration while correcting for further distortion caused by the first camera and the second camera having rolling shutters. The world coordinates may be used as constraints which correspond to the times when the picture elements of the first and second image points are actually captured.

These, additional, and/or other aspects and/or advantages of the present invention are set forth in the detailed description which follows; possibly inferable from the detailed description; and/or learnable by practice of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is herein described, by way of example only, with reference to the accompanying drawings, wherein:

FIG. 1 illustrates stereo cameras installed behind the windshield of a host vehicle, according to embodiments of the present invention.

FIG. 2 is a schematic block diagram of a driver assistance and or driving control system installed in the host vehicle according to embodiments of the present invention.

FIG. 3 illustrates schematically a structure-from-motion (SIM) algorithm as used in embodiments of the present invention.

FIG. 4 illustrates epipolar geometry of stereo cameras.

FIG. 5 illustrates a simplified flow chart of a method according to an embodiment of the present invention.

The foregoing and/or other aspects will become apparent from the following detailed description when considered in conjunction with the accompanying drawing figures.

DETAILED DESCRIPTION

Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. The embodiments are described below to explain the present invention by referring to the figures.

Before explaining embodiments of the invention in detail, it is to be understood that the invention is not limited in its application to the details of design and the arrangement of the components set forth in the following description or illustrated in the drawings. The invention is capable of other embodiments or of being practiced or carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein is for the purpose of description and should not he regarded as limiting.

By way of introduction, embodiments of the present invention are based on the following concept: A pair of stereo cameras is installed behind the windshield of a host vehicle. The forward motion, distance in meters, of the host vehicle may be known from sensors in the vehicle through the CAN bus. While moving, multiple images from a camera, e.g, one of the two stereo cameras, are used to recover three-dimensional world coordinate information of number of world points using Structure from Motion (SfM) techniques. SfM thus provides a three-dimensional coordinates (X,Y,Z) of world points in the image. This information is then used to compute the camera parameters of the second camera, and in particular at least some of the intrinsic and/or extrinsic parameters. Calibration parameters thus determined generate stereo disparity that gives three-dimensional world coordinate information, e.g distance or depth Z that complies with the three-dimensional world coordinate information previously computed from SfM.

The resulting solution is a robust depth estimation that merges both spatial and temporal depth estimation algorithms. Following camera calibration, the depth from stereo disparity may be used to augment the depth from SfM in particular in situations that are difficult for SfM such as when the host vehicle is stationary or when there are multiple moving objects in the scene.

Referring now to the drawings, reference is now made to FIG. 1 which illustrates stereo cameras, left camera 12L and right camera 12R installed behind the windshield of vehicle 18 and viewing the road environment substantially in the Z direction in world coordinates, the forward direction of vehicle 118. Reference is now also made to FIG. 2, which is a schematic block diagram of a driver assistance and or driving control system 16 installed in vehicle 18. A time series of image frames 15L is being captured by a processor 14 from the left camera and a second time series of image frames 15R is being captured by processor 14.

Reference is now also made to FIG. 3 which illustrates schematically a structure-from-motion (SfM) algorithm as used in embodiments of the present invention. One of the two stereo cameras, in the example stereo camera 12R, is shown in two positions, along a road and installed in vehicle 18. A time axis is shown on which camera 12R is shown in position 0 at time t₀ and later in position 1 at time t₁. An image frame 15R₀ is shown schematically which is captured at time t₀ by right camera 12R and a second image frame 15R₁ captured at time t₁. A world Cartesian coordinate system (X,Y,Z) is shown. At position 1 right camera 12R is translated by a vector T and rotated by a matrix R relative to right camera 12R at position 0. A world point P is shown. World point P is imaged respectively at image point p_(r0) and at image point p_(r1) in both image frame 15R₀ and image frame 15R₁.

In the SfM algorithm, multiple, e.g. 6-20 matching image point pairs located in the two image frames 15R₀ and 15R₁, respectively may be required. The matching image points p_(r0),p_(r1) are images of multiple object points in the environment. The matching image point pair p_(r0),p_(r1) as shown as shown in FIG. 3 is just one example.

R is a 3×3 rotation matrix that represents camera orientation and T is a three vector that represents camera translation, of the position of the world origin O in the right camera coordinate system which is translated. Together, these are known as camera extrinsic parameters and describe camera pose.

Translation vector T and rotation matrix R are suitably parameterized and the parameters may be determined from the matching image points p_(r0),p_(r1) so that with a sufficient number of matching image point point pairs, the parameters of translation vector T and rotation matrix R of right camera 12R may be determined under the assumptions of the pinhole projection The 3D world coordinates (X,Y,Z) for each object point P may be computed from the corresponding points in the two images and the translation vector T and rotation matrix R using a variety of methods known in the art. Thus, the real world coordinates (X,Y,Z) for each object point P may be determined from the SfM algorithm using a single camera 12R. The 3D point P projects to 2D point in the image of right camera 12R. For simplicity the world coordinate system may be aligned with the right camera resulting in extrinsic camera parameters: M=[I:0] and intrinsic camera parameters may be obtained using nominal lens parameters for focal length and lens distortion. Alternatively the intrinsic parameters of the right camera might be obtained using a calibration pattern.

Reference is now made to FIG. 4 which illustrates epipolar geometry of cameras 12L and 12R. World point P is shown, for instance, the same point P as shown in FIG. 3, in which camera 12R is used to determine world coordinates using an SfM algorithm. In the epipolar geometry as shown, cameras 12L and 12R are modeled using pinhole projection.The pinhole of left camera 12L is at origin O_(l) which is the origin of the world coordinate system of left camera 12L. The pinhole of right camera 12R is at origin O_(r) which is the origin of the world coordinate system of right camera 12R. Image planes 15R and 15L are shown in perspective view. Note that the image plane as shown here in front of the optical origins O_(l), O_(r) or pinholes. In a real camera, the image planes 15R and 15L would be behind the pinholes, and the images would be inverted. Image points p_(r) and p_(l) of world object point P are shown respectively in image planes 15L and 15R respectively. The focal lengths (not shown) of cameras 12L and 12R are given by the distance between the respective origins O_(l), O_(r) to image planes 15L and 15R. The perpendicular to image planes 15L and 15R to the respective origins O_(l), O_(r) defines the principal rays (not shown)and the principal points (not shown) in image planes 15L and 15R at the points of intersection with the principal rays. The plane formed by origins O_(l), O_(r) and world point P is the epipolar plane with respect to world point P. The epipolar lines are shown in image planes 15R and 15L intersecting the epipolar plane O_(l)O_(r)P_(i). The epipoles e_(l) and e_(r) are the points of intersection between epipolar lines and the line between the points O_(l), O_(r) of origin.

Reference is now made also to FIG. 5, which illustrates a simplified flow chart of a method 50 according to an embodiment of the present invention. Intrinsic parameters of right camera 12R are known or assumed for example from camera manufacturer values. During motion of host vehicle 18 multiple image frames 15L, 15R are captured (step 51) from respective stereo cameras 12L, 12R mounted in host vehicle 18. In step 53, multiple image points or multiple image features are located in an image frame 15R. An example of an image point is a corner which may located for instance by a Harris operator. The same or similar image features are located or matched (step 55) in corresponding image points in another image frame 15R captured from right stereo camera 12R at a second time. There are many methods described in the art for matching image points and image features. Using an SfM algorithm as known in the art, on images captured from right stereo camera 12R, three-dimensional world coordinate information (X,Y,Z) may be computed (step 57) in the world coordinate system of right the camera 12R for the object points which were matched (step 55). In step 59, matching image points or features are located in the left camera images 15L corresponding to image points or features in right images 15R. Matching points may be obtained simply by comparing an image patch in the neighborhood of the point in right image 15R to the best matching patch in left image 15L. Projective epipolar constraints may be used in step 59, although the calibrated epipolar geometry has not yet been solved. The world coordinate information (X,Y,Z) of image points as computed (step 57) using SfM in right images 12R are projected onto the left image 12L, and compared to the matching points in the left image frame and the distance minimized to solve (step 60) for the camera parameters of left camera 12L. Step 60 may be performed while varying camera parameters of left camera 12L and when the best solution is found, camera parameters 12L of the left camera are output. Alternatively, a closed form solution (step 60) is determined for the camera projection matrix of the left camera and other camera parameters of the left camera using the 3D points and their 2D image points in the left camera. The left camera parameters can be used to describe the epipolar geometry. A stereo disparity map computed from left and right stereo cameras 12L, 12R results in a depth map consistent with the three-dimensional world coordinate information , e.g depth Z_(r) computed using SIM with right camera 12R.

Further Embodiments and Features

Matching (steps 55 and 59) has been described as being between sparsely distributed image features and/or points in consecutive images 15R or left 15L/right 15R image pairs. However, image points may be selected which are densely distributed and dense optical flow techniques may be used for the SfM computation (step 57) and/or for computations using stereo pairs with the same general structure. Dense optical flow may he computed between two right images 15R a dense depth map may be computed. Dense optical flow may similarly be computed using respective paired images from stereo cameras 12L, 12R.

The use of right 12R and left 12L stereo cameras is by way of example. In different embodiments the present invention is applicable o stereo cameras relatively displaced forward/rearward and/or displaced vertically such as a stereo pair of a windshield camera and camera installed on a car bumper.

Although the discussion includes modelling of radial distortion, the methods as disclosed herein may be similarly applied to other lens distortion models such as a fish eye lens. However, a closed form solution may not be available for all types of distort d numerical solution is available.

Consider a windshield and bumper camera pair in which the bumper camera is a wide fish eye camera. It is possible that the objects at the edge of the bumper camera image are not visible in the windshield camera image. However these objects may have been visible in earlier images of the windshield camera when the vehicle was farther from the object. If the three-dimensional position of the object was detected in earlier images of the windshield camera and the objects are matched in earlier images, the objects can be tracked and the three-dimensional position may be updated using ego motion front an SIM computation from images of the bumper camera. The updated three-dimensional positions may then be used at a later image for the calibration of the windshield camera.

A More Formal Description

Method 50 according to embodiments of the present invention is presented more formally and in further detail in the description as follows. Rules of notation in the description as follows are:

Square brackets [. . . ] are used to denote a matrix, A vector is denoted as a matrix of a single column. Comma may be used to separate columns of a matrix, Semi-colon may be used to separate rows of a matrix. The symbol

refers to real space. Points in real space

are represented by vectors or matrices of single colunm, Coordinates in Euclidean or three dimensional (3D) world space are denoted with capital letters, e.g. X,Y,Z, Coordinates in two-dimensional (2D) image space are denoted with small letters, e.g. x,y.

In what follows, it will be convenient to work. with homogeneous as well as Euclidean coordinates. In homogeneous coordinates, a point in N-dimensional space is expressed by a vector with N+1 elements that is defined only up to scale, i.e. multiplying the vector by an arbitrary non-zero scale factor will not change its meaning. Provided the N+1'th element is non-zero, a homogeneous coordinate may be related to its Euclidean equivalent by dividing the first N elements by the N+1'th. Otherwise, the coordinate describes a point at infinity.

Calibration Parameters

A 3D world point P=[X;Y;Z] is mapped to a 2D image point p=[x; y] by a 3×4 projection matrix M. [p;1]

M[P; 1]  (1) where [p;1 ] is a 3-vector in homogeneous coordinates in image space, [P; 1] is a 4-vector in world space in homogeneous coordinates and denotes

equality up to scale. The matrix M may be further uniquely decomposed into: an intrinsic parameters matrix A ϵ

, a rotation matrix R ϵ

^(3×3) and a translation vector t ϵ

^(3×1) as follows: M=A[R, t]  (2)

The intrinsic parameters matrix A is a general upper triangular matrix. Given focal length f and principal point [pp_(x), pp_(y)], the intrinsic camera parameters matrix A becomes:

$\begin{matrix} {A = \begin{bmatrix} f & 0 & {pp}_{x} \\ 0 & f & {pp}_{y\;} \\ 0 & 0 & 1 \end{bmatrix}} & (3) \end{matrix}$

The distortion of the camera is modeled by a radial distortion. The distortion parameters θ={c_(x), c_(y), α₀, α₁} are modeled by a center of distortion point {tilde over (c)}=[{tilde over (c)}_(x); {tilde over (c)}_(y)] and two stretch coefficients α₀ and α₁. A function F to correct a distortion of a point {tilde over (p)} is given by: p=F({tilde over (p)};θ)  (4) F({tilde over (p)};θ)=({tilde over (p)}−{tilde over (c)})(1+α₀ r ²+α₁ r ⁴)+{tilde over (c)}  (5) where r=∥{tilde over (p)}−{tilde over (c)}∥  2 which is the least squares or L² norm of the difference between point {tilde over (p)} and center point {tilde over (c)}. Taking distortion into account, equation 1 becomes: λ[F({tilde over (p)};θ);1)]=M[P;1]  (6) where λ is the missing scale factor from equation 1.

For simplicity of notation the above equation may be written in the following manner: F({tilde over (p)},θ)=dehom(M·hom(P))  (7) hom(p)=[p;1] dehom(λ[p;1])=p where the function horn denotes a conversion from Euclidean coordinates to homogeneous coordinates and the function dehom denotes a conversion from homogeneous coordinates back to Euclidean coordinates. The Algorithm

In automotive applications, the baseline is relatively small and the objects relatively distant. As a result image disparity is quite small. As a result, feature points in the right image can be matched to points in the left image using image tracking such as the Lucas-Kanade method or exhaustive search for a similar patch between the two images in a small search region. In the case of larger potential disparities, scale-invariant feature transform (SIFT) features may be used to assist in the matching. Many other methods for point matching are known in the art.

Let {tilde over (p)}_(r), {tilde over (p)}_(l)ϵ

denote a pair of matching points in the right and left images, captured by the right and left stereo cameras, respectively. Let Z_(r)ϵ

denote the depth value related to the matching point {tilde over (p)}_(r) as computed by a mono or single camera structure-from-motion (SfM) algorithm. The intrinsic parameter matrices of the right camera A_(r), as well as the distortion parameters θ_(r) and θ_(l) of right and left cameras respectively are initialized to the default parameters of the camera manufacture

Camera Matrix Initialization

From the known motion of the cameras, depth Z_(r) is computed using the structure-from-motion (SfM) algorithm, Thus, the world coordinate system is defined to be the coordinate system of the right camera with no rotation nor translation:

$\begin{matrix} {M_{r} = {A_{r}\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}}} & (8) \end{matrix}$

Intrinsic parameters matrix A_(r) and distortion parameters θ_(r) of the right camera are used to compute the world point P from the distorted image point {tilde over (p)}_(r) and the depth Z_(r), which is computed by the SFM algorithm. Specifically, the vector direction V_(r). of the distorted image point {tilde over (p)}_(r) is given by: V _(r) =A _(r) ⁻¹ hom(F({tilde over (p)} _(r),θ_(r)))  (9)

And given the depth Z_(r) we have the vector of the world point P_(r) corresponding to the distorted image point {tilde over (p)}_(r) in the image of the right camera:

$\begin{matrix} {P_{r} = {\frac{Z_{r}}{V_{rz}}V_{r}}} & (10) \end{matrix}$

Now, we wish to recover the left camera projection max M₁ given the 3D points P_(r), in the world coordinate system, and their corresponding undistorted image points, [x,y]=F({tilde over (p)}_(l), θ_(l)) in the coordinate system of the left camera. The equations take the following form:

Let M_(l)=[m_(l0) ^(T); m_(l1) ^(T); m_(l2) ^(T)] were m_(li) denotes the i-th row of matrix M_(l).

We have x=(m_(l0) ^(T)P)/(m_(l2) ^(T)P) and y=(m_(l1) ^(T)P)/(m_(l2) ^(T)P) From which we obtain: m _(l0) ^(T) P−x·m _(l2) ^(T) P=0  (11) m _(l1) ^(T) P−y·m _(l2) ^(T) P=0  (12)

We use least square solution to these equations to solve the left camera matrix: M_(l). We combat outliers by using RANSAC. In each round we sample 6 points, and solve the camera matrix M_(l) using Equations (11) and (12). The score for a solution in each round is computed as follows: The distance of the warped projected world point from the matched image point is: dist_(i) =∥{tilde over (p)} _(li) −F ⁻¹(dehom(M _(l) ·hom(P _(i))),θ_(l))∥₂   (13)

A simple score that we can define for each model is:

$\begin{matrix} {{score} = {\sum\limits_{i}{\min\left( {{dist}_{i},\tau} \right)}^{2}}} & (14) \end{matrix}$ where τ is a specified threshold on the error of inlier points. Alternatively, we use the following score:

$\begin{matrix} {{score} = {\sum\limits_{i}\sqrt{\tau^{2} - {\max\left( {{r - {dist}_{i}},0} \right)}^{2}}}} & (15) \end{matrix}$

The score defined in Equation (15) has the advantage that inliers that have high distance, which are more likely to be outliers, have less impact on the score, thus the final parameters are likely to be more accurate.

Camera Matrix and Distortion Correction Initialization

We compute the distance error specified by Equation (13), and using a predefined threshold we determine which points pair are inliers.

Given the inliers we re-compute the parameters of the left camera, without using the computed camera matrix M as an initial guess. The only input that we use is an initial guess to distortion center. The algorithm in this section is divided into two steps. in the first step we have a non linear estimation of the distortion center. In the second step we efficiently estimate the rest of the calibration parameters.

The camera matrix {circumflex over (M)} that is recovered by these steps is relative to a given distortion center: [c_(x); c_(y)]. That means that projection model is: p _(l) −[c _(x) ;c _(y) ]=dehom({circumflex over (M)}·hom(P))  (16)

Once we reveal the camera matrix we can modify it to be relative to the image:

$\begin{matrix} {M = {\begin{bmatrix} 1 & 0 & c_{x} \\ 0 & 1 & c_{y} \\ 0 & 0 & 1 \end{bmatrix}\hat{M}}} & (17) \end{matrix}$

We now describe how we, compute an error score for the non linear search, given the distortion center. Let [c_(x); c_(y)] he the distortion center. Let [{tilde over (x)}; {tilde over (y)}]={tilde over (p)} _(l) −[c _(x) ; c _(y)] be the distorted point in the left image, relative to the distortion center. We seek for camera matrix {circumflex over (M)} which is relative to the distortion center thus the vector [x; y]=dehom({circumflex over (M)}·hom(P)) is the projected point relative to the distortion center, and as a result it is a scale of the vector [{tilde over (x)}; {tilde over (y)}]

Thus we can define a linear equation over two rows of the camera matrix: {circumflex over (M)}=[m₀ ^(T); m₁ ^(T); m₂ ^(T)]: {circumflex over (M)}·hom(P)=λ·hom([{tilde over (x)}; {tilde over (y)}]) (m ₀ ^(T) ·hom(P))/(m ₁ ^(T) ·hom(P))={tilde over (x)}/{tilde over (y)}

And we have the linear equation: m ₀ ^(T) ·hom(P)·{tilde over (y)}−m ₁ ^(T) ·hom(P)·{tilde over (x)}=0  (18)

After we solve m₀ and m₁, we can define a simple error function by computing the distance of the point ({tilde over (p)}_(l)−c) from the ray defined by v=[m₀ ^(T); m₁ ^(T)]·hom(P):

$\begin{matrix} {{dist} = {{\left( {I - \frac{v \cdot v^{T}}{{v}^{2}}} \right)\left( {{\hat{p}}_{l} - c} \right)}}} & (19) \end{matrix}$

The error that is defined by Equation (15), is minimized by non linear optimization to obtain the distortion center [c_(x); c_(y)].

Complete Parameters Estimation

The input to this step are the inliers points: P and {tilde over (p)}_(l) the center of distortion [c_(x); c_(y)], and two rows of the camera matrix: m₀ and m₁. The output of this step is the third row of the camera matrix m₂, and the distortion stretch coefficients: α₀ and α₁. See equation (5).

Recall that {circumflex over (M)} is relative to the distortion center, thus from equations (5) and (7) we have that: [{tilde over (x)};{tilde over (y)}](1+α₀ r ²+α₁ r ⁴)=dehom({circumflex over (M)}·hom(P))  (20) so we get two equations for each pair of points: {tilde over (x)}(1+α₀ r ²+α₁ r ⁴)(m ₂ ^(T) P)=m ₀ ^(T) P {tilde over (y)}(1+α₀ r ²+α₁ r ⁴)(m ₂ ^(T) P)=m ₁ ^(T) P

Where we have 6 unknowns: The 4 unknowns of m₂, and the 2 unknowns α₀ and α₁. These equations are not linear and instead we solve linearly for the following 12 unknowns: [m₂ ^(T);α₀m₂ ^(T);α₁m2^(T)]

$\begin{matrix} {\left\lbrack {U,D,V} \right\rbrack = {{svd}\left( \begin{bmatrix} b_{0} & b_{1} & b_{2} & b_{3} \\ b_{4} & b_{5} & b_{6} & b_{7} \\ b_{8} & b_{9} & b_{10} & b_{11} \end{bmatrix} \right)}} & (21) \end{matrix}$

Once we have the solution vector: b ϵ

we decompose it using Singular Value Decomposition (SVD):

The solution to the 6 parameters: m₂, and α₀ and α₁ can be taken using the highest singular value and its related singular vectors: U₀D₀V₀ ^(t)

[1;α₀;α₁]m₂ ^(T)  (22) 4.4 Refine Camera Parameters

We refine the parameters of the left camera using non linear optimization. The optimizer minimizes the same score define in Equation (15).

Note that we optimize only the left camera parameters, and use the right camera parameters as they were given in the initialization step. There is also the option to refine the right camera parameters, but this option is more expensive to compute.

Correction for Distortion Caused by Rolling Shutter Cameras

The cameras that we use have a rolling shutter effect. That means that rows of camera are not captured at the satin', time, but captured is performed row after row. In order to perform auto calibration for this type of camera we fix the input to the algorithm in the following manner. The Structure From Motion (SIM) algorithm computes the depth of each pixel. In equation (10) we called this depth Z_(r). The depth reported by SIM is a depth at specific time related to the image, such that the depths of all pixels are generated for an imaginary image without the effect of rolling shutter. We do not use this depth. Instead we use a depth that is also computed by SIM algorithm, which is the depth at the time when the pixel was actually captured. Let us call this depth {circumflex over (Z)}_(r). Otherwise, the equation as follows has the same form as equation 10):

$\begin{matrix} {{\hat{P}}_{r} = {\frac{{\hat{Z}}_{r}}{V_{rz}}V_{r}}} & (23) \end{matrix}$

The world point {circumflex over (P)}_(r) is related to time when the pixel was actually captured. This world point is still not the correct world point to use. The problem is that due the rolling shutter, and the inability of generating perfectly aligned stereo cameras, the stereo camera are actually not perfectly synchronized, and thus the world point {circumflex over (P)}_(r) is not the point that is projected to p_(l). In order to fix it we use another output from SfM, the ego motion matrix T=[R, t] that maps point from previous image to current image: P _(c) =R·P _(p) +t  (24)

Where P_(c) and P_(p) are the coordinates of a stationary point relative to the current and previous coordinate systems respectively.

Let Δ_(SFM)=t_(c)−t_(p) be the time elapsed between previous image and current image used by the SfM. t_(c) and t_(p) are the times related to current and previous images respectively, in seconds.

Let Δ_(stereo)=t_(l)−t_(r) be the time discrepancy between left and right stereo images, due to non perfect synchronization. t_(l) and t_(r) are the times related to left and right stereo images respectively, in seconds.

We can fix the world point

$T = \begin{bmatrix} R & t \\ 000 & 1 \end{bmatrix}$ that is related to time when the pixel in the right image was captured, to be a world point P_(r) that is related to the time when the matching pixel in the left image was captured as follows:

Where

$\begin{matrix} {P_{r} = {{dehom}\left( {T^{\frac{\Delta_{storm}}{\Delta_{SFM}}} \cdot {\hom\left( {\hat{P}}_{r} \right)}} \right)}} & (25) \end{matrix}$

The world point P_(r) defined by equation (25), replaces the world point P_(r) defined by equation (10). The rest of the auto calibration algorithm remains unchanged.

The term “object” as used herein refers to an object in real space being viewed by a camera. A curb along the edge of a road and a lane marker in the road are examples of objects. The term “image” refers to the image of one or more objects in image space at the focal plane of camera 12. Image coordinates small letters refer to image space and may be in arbitrary units or numbers of picture elements in the horizontal and vertical directions with the pixel dimensions assumed. The term “image motion” refers to motion of an image of an object in image space. From image frame 15 to a subsequent image frame 15 the points of the image of the object may map from one set of coordinates (x1, y1) to a different set of coordinates (x2,y2). The term “image motion” refers to the mapping of coordinates of an image from image frame to image frame or a function of the mapping.

The term “projection” or “projecting” as used herein refers to camera or perspective projection from three dimensional space to a two dimensional image unless otherwise indicated by the context.

A “depth map” as used herein is an image that contains information relating o the world space distance of object points of scene objects from a viewpoint.

Image points in the stereo images of the same world object point or feature are known herein as as “corresponding” or “matching” points.

The indefinite articles “a” and “an” is used herein, such as “a camera”, “an image frame” have the meaning of “one or more” that is “one or more cameras” or “one or more image frames”.

Although selected embodiments of the present invention have been shown and described, it is to be understood the present invention is not limited to the described embodiments. Instead, it is to be appreciated that changes may be made to these embodiments, the scope of which is defined by the claims and the equivalents thereof. 

What is claimed is:
 1. A computer implemented method for auto-calibration of a camera, the method comprising the following operations performed by one or more processors: receiving, from a first camera, a first image and a second image, the first and second images including an environment of the first camera; receiving, from a second camera, a third image including the environment of the second camera; identifying a first image point corresponding to a feature in the first image and a second image point corresponding to the feature in the second image; determining a three-dimensional coordinate of the feature based on a motion parameter of at least one of the first camera and the second camera and a comparison of the first image point and the second image point; determining a third image point corresponding to the feature in the third image; and determining at least one calibration parameter of the second camera based on the three-dimensional coordinate of the feature and the third image point.
 2. The method of claim 1, further comprising: identifying a fourth image point corresponding to a second feature in a fourth image received from the first camera and a fifth image point corresponding to the second feature in a fifth image received from the second camera; and determining a three dimensional coordinate of the second feature based on image coordinates of the feature point in the fourth image and the fifth image.
 3. The method of claim 1, wherein the feature in the first and second image includes an object in the environment of the first camera.
 4. The method of claim 1, wherein the first camera and the second camera are positioned at a fixed distance from each other.
 5. The method of claim 4, wherein the first camera and the second camera are displaced along a first axis.
 6. The method of claim 5, wherein the first camera and the second camera are further displaced along a second axis.
 7. The method of claim 6, wherein the first camera and the second camera are further displaced along a third axis.
 8. The method of claim 1, wherein the first camera and the second camera are angled relative to each other.
 9. The method of claim 1, wherein the calibration parameter is representative of a distortion of a lens of the second camera.
 10. The method of claim 1, wherein the calibration parameter is representative of a focal length of a lens of the second camera.
 11. The method of claim 1, wherein the calibration parameter is representative of a center of projection of a three-dimensional space including the three-dimensional coordinate.
 12. The method of claim 1, wherein the calibration parameter is representative of one of more extrinsic parameters of the second camera.
 13. The method of claim 12, wherein the extrinsic parameters include at least one of orientation, translation, and position of the second camera.
 14. The method of claim 1, wherein the first camera and the second camera are fixed within a host structure.
 15. The method of claim 14, wherein the motion parameter of at least one of the first camera and the second camera is indicative of ego motion of the structure.
 16. A system for auto-calibration of a camera of a host vehicle, the system comprising: at least one processor programmed to: receive, from a first camera, a first image and a second image, the first and second images including an environment of the first camera; receive, from a second camera, a third image including the environment of the second camera; identify a first image point corresponding to a feature in the first image and a second image point corresponding to the feature in the second image; determine a three-dimensional coordinate of the feature based on a motion parameter of at least one of the first camera and the second camera and a comparison of the first image point and the second image point; determine a third image point corresponding to the feature in the third image; and determine at least one calibration parameter of the second camera based on the three-dimensional coordinate of the feature and the third image point.
 17. The system of claim 16, wherein the processor is further programmed to: identify a fourth image point corresponding to a second feature in a fourth image received from the first camera and a fifth image point corresponding to the second feature in a fifth image received from the second camera; and determine a three dimensional coordinate of the second feature based on image coordinates of the feature point in the fourth image and the fifth image.
 18. The system of claim 16, wherein the first camera and the second camera are fixed within a host structure.
 19. The system of claim 16, wherein the motion parameter of at least one of the first camera and the second camera is indicative of ego motion of the structure.
 20. A non-transitory computer-readable storage medium that comprises instructions that are executable by at least one processor to cause the at least one processor to perform a method for auto-calibration of a camera, the method comprising: receiving, from a first camera, a first image and a second image, the first and second images including an environment of the first camera; receiving, from a second camera, a third image including the environment of the second camera; identifying a first image point corresponding to a feature in the first image and a second image point corresponding to the feature in the second image; determining a three-dimensional coordinate of the feature based on a motion parameter of at least one of the first camera and the second camera and a comparison of the first image point and the second image point; determining a third image point corresponding to the feature in the third image; and determining at least one calibration parameter of the second camera based on the three-dimensional coordinate of the feature and the third image point. 